<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        obj1 = { name: 'lsii' }
        obj2 = obj1    // 会造成引用问题，引用的是一个地址

        var obj2 = {}
        for (var key in obj1) {
            obj2[key] = obj1[key]
        }				// 不会修改obj1的值，没有造成引用问题

        // 简版深拷贝封装对象
        function deepCopy(obj1) {
            var obj2 = {}
            for (var key in obj1) {
                obj2[key] = obj1[key]
            }
            return obj2
        }
        var obj2 = deepCopy(obj1)
        console.log(obj2)

        // 深拷贝封装函数判断 传入的内容为 数组 | 对象
        // function deepcopy(obj1){
        //     // 根据传入的数据，自动生成 数组 或者 对象
        //     var obj2 = Object.prototype.toString.call(obj1) === '[object Array]'?[]:{};
        //     for(var key in obj1){
        //         obj2[key] = obj1[key]
        //     }
        //     return obj2
        // }
        // var obj = [1,2,3]
        // var obj2 = deepcopy(obj)
        // console.log(obj2)


        // 判断数据类型的方法：
        /*
            1.0 typeOf    无法判断数组和对象，用于判断基本数据类型
            2.0 instanceof  判断某个实例 和构造器 在原型链上是否有关系 返回的是一个布尔值
            3.0 Object.protype.toString.call()
        */
        // 精确判断数据类型
        // Object.protype.toString.call()


        // 多层数据和对象问题
        // 第一层不会引用，第二层会造成引用问题
        

    </script>
</body>

</html>